package com.teacherprofile.common.domain;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.ContentStyle;
import com.alibaba.excel.annotation.write.style.HeadFontStyle;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum;
import com.alibaba.excel.enums.poi.VerticalAlignmentEnum;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.teacherprofile.common.annotation.Excel;
import com.teacherprofile.common.converters.DateConverter;
import com.teacherprofile.common.converters.academic_papers.AcademicPapersInclusionConverter;
import com.teacherprofile.common.converters.academic_papers.AcademicPapersTypeConverter;
import com.teacherprofile.common.core.domain.BaseEntity;
import lombok.Data;

import java.util.Date;

/**
 * 学术论文对象 tb_academic_papers
 * 
 * @author qvtu
 * @date 2025-05-15
 */
@Data
@ContentStyle(horizontalAlignment = HorizontalAlignmentEnum.CENTER, verticalAlignment = VerticalAlignmentEnum.CENTER)
@ExcelIgnoreUnannotated
@ColumnWidth(22)
@HeadRowHeight(16)
@HeadFontStyle(fontHeightInPoints = 12)
@TableName("tb_academic_papers")
public class AcademicPapers extends BaseEntity
{

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.ASSIGN_ID)
    /** ID */
    private Long id;

    /** 论文题目 */
    @ExcelProperty(value = "论文题目",order = 3)
    private String title;

    /** 作者列表 */
    @ExcelProperty(value = "作者列表",order = 7)
    private String authors;

    /** 论文类别 */
    @ExcelProperty(value = "论文类别",converter = AcademicPapersTypeConverter.class)
    private Integer type;

    /** 发表期刊 */
    @ExcelProperty(value = "发表期刊")
    private String journal;

    /** 收录情况 */
    @ExcelProperty(value = "收录情况",converter = AcademicPapersInclusionConverter.class)
    private Integer inclusion;

    /** 发表时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @ExcelProperty(value = "发表时间", converter = DateConverter.class)
    private Date publishDate;

    /** 部门id */
    @ExcelProperty(value = "部门id")
    private Long deptId;

    /** 教职工号 */
    @ExcelProperty(value = "教职工号",order = 1)
    private String userName;

    /** 姓名 */
    @ExcelProperty(value = "姓名",order = 2)
    private String nickName;

    /** 扫描件 */
    @ExcelProperty("扫描件")
    private String scannedDocumentsUrl;

}
